{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#   [Py4Hw User Guide](../UserGuide.ipynb)> 8.1 Currently supported Blocks\n",
    "\n",
    "The following table is a list of the currently supported blocks. All blocks are implemented as classes. We add the file where the block is implemented \n",
    "\n",
    "| Block | Source | Type |  Description |\n",
    "| :--- | :--- | :--- | :--- |\n",
    "| Add | logic/arithmetic | Combinational | Integer Add |\n",
    "| And | logic/bitwise | Combinational | And with arbitrary number of inputs |\n",
    "| And2 | logic/bitwise | Combinational | And with 2 inputs |\n",
    "| AnyEqual | logic/relational | Combinational | Active when there is any equal value among the inputs |\n",
    "| BinaryToBCD | logic/arithmetic | Combinational | Converts a binary number into BCD |\n",
    "| Bit | logic/bitwise | Combinational | Obtain a specific bit from a wire |\n",
    "| BitsLSBF | logic/bitwise | Combinational | Obtain the list of all bits from a wire in least significant bit first order |\n",
    "| BitsMSBF | logic/bitwise | Combinational | Obtain the list of all bits from a wire in most significant bit first order |\n",
    "| Buf | logic/bitwise | Combinational | Buffer (input=output) |\n",
    "| ClockDivider | logic/clock | Sequential | Generates a clock with a lower frequency that is a fraction of the frequency of the current clock |\n",
    "| Comparator | logic/relational | Combinational | Compares 2 inputs, detects gt, eq, lt |\n",
    "| ConcatenateLSBF | logic/bitwise | Combinational | Concatenates wires in least significant bit first order |\n",
    "| ConcatenateMSBF | logic/bitwise | Combinational | Concatenates wires in most significant bit first order |\n",
    "| Constant | logic/bitwise | Combinational | Constant value |\n",
    "| Counter | logic/arithmetic | Sequential | Counter with reset and enable |\n",
    "| Decoder | logic/bitwise | Combinational | Decoder. It converts a (n-bits) value to its one-hot encoding (2^n bits) |\n",
    "| Demux | logic/bitwise | Combinational | Demux. It routes an input value depending on a n-bit selector to one of the 2^n outputs|\n",
    "| Digit7Segment | logic/bitwise | Combinational | Converts an hexadecimal digit (4 bits) into a 7 segment display control |\n",
    "| EqualConstant | logic/relational | Combinational | Equal to a constant |\n",
    "| Equal | logic/relational | Combinational | Equal between 2 inputs | \n",
    "| FPAdder_SP | logic/arithmetic_fp | Combinational | Floating point (single precission) adder |\n",
    "| FPComparator_SP | logic/relational | Combinational | Floating point (single precission) comparator |\n",
    "| FPMult_SP | logic/arithmetic_fp | Combinational | Floating point (single precission) multiplier |\n",
    "| FPtoInt_SP | logic/arithmetic_fp | Combinational | Convert a floating point number to integer |\n",
    "| GatedClock | logic/clock | Sequential | Gated clock circuit |\n",
    "| InttoFP_SP | logit/arithmetic_fp | Combinational | Convert an integer to floating point |\n",
    "| ModuloCounter | logic/arithmetic | Sequential | Module counter with reset and enable |\n",
    "| Max2 | logic/relational | Combinational | Returns the maximum between 2 inputs |\n",
    "| Minterm | logic/bitwise | Combinational | Output is active when the list of input wires equal a constant |\n",
    "| Mul | logic/arithmetic | Combinational | Integer Multiply |\n",
    "| Mux | logic/bitwise | Combinational | Mux with with arbitrary number of inputs (must be power of 2) |\n",
    "| Mux2 | logic/bitwise | Combinational | Mux with two inputs |\n",
    "| Nand2 | logic/bitwise | Combinational | Nand with 2 inputs |\n",
    "| Neg | logic/arithmetic | Combinational | Negate a value (0-x) | \n",
    "| Nor | logic/bitwise | Combinational | Nor with arbitrary number of inputs |\n",
    "| Nor2 | logic/bitwise | Combinational | Nor with 2 inputs |\n",
    "| Not | logic/bitwise | Combinational | Inverter |\n",
    "| OneHotDemux | logic/bitwise | Combinational | Demultiplexer with a selection signal using one-hot encoding |\n",
    "| OneHotMux | logic/bitwise | Combinational | Multiplexer with a selection signal using one-hot encoding |\n",
    "| Or | logic/bitwise | Combinational | Or with arbitrary number of inputs |\n",
    "| OrBits | logic/bitwise | Combinational | Ors all the bits of a wire |\n",
    "| Or2 | logic/bitwise | Combinational | Or with 2 inputs |\n",
    "| Range | logic/bitwise | Combinational | Obtains a subset of bits from a wire |\n",
    "| Reg | logic/storage | Sequential | Register |\n",
    "| Repeat | logic/bitwise | Combinational | Duplicates a wire a number of times |\n",
    "| ShiftLeftConstant | logic/bitwise | Combinational | Shift Left by a constant value |\n",
    "| ShiftRight | logic/arithmetic | Combinational | Shift Right  |\n",
    "| ShiftRightConstant | logic/bitwise | Combinational | Shift Right by a constant value |\n",
    "| Select | logic/bitwise | Combinational | Selects from a number of inputs based on a one hot selection signal (equal to OneHotMux) |\n",
    "| SelectDefault | logic/bitwise | Combinational | Selects from a number of inputs based on a one hot selection signal, with a default entry |\n",
    "| Sequence | logic/simulation | Sequential | Generates sequence of values as stimuli for simulation | \n",
    "| Sign | logic/arithmetic | Combinational | Gets the sign bit (MSB) |\n",
    "| SignedDiv | logic/arithmetic | Combinational | Divides signed values |\n",
    "| SignedMul | logic/arithmetic | Combinational | Multiplies signed values |\n",
    "| SignedSub | logic/arithmetic | Combinational | Subtract signed values |\n",
    "| SignExtend | logic/arithmetic | Combinational | Sign extends |\n",
    "| Sub | logic/arithmetic | Combinational | Integer Subtract |\n",
    "| SumOfMinterms | logic/bitwise | Combinational | Sum of minterms |\n",
    "| TReg | logic/storage | Sequential | Toggle register |\n",
    "| Waveform | logic/simulation | Sequential | Collects wire info to create waveforms |\n",
    "| Xor2 | logic/bitwise | Combinational | Xor with 2 inputs |\n",
    "| Xor | logic/bitwise | Combinational | Xor with arbitrary number of inputs\n",
    "| ZeroExtend | logic/arithmetic | Combinational | Zero extends |\n",
    "| Scope | logic/simulation | Sequential | Collects wire info to show values |\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
